//Errors for the newton Internet package
// Copyright 1995, 1996 Apple Computer, Inc.
// Alpha release, January 18, 1996

// InetTool Errors

constant  kInetToolErrBindFailed				:= -60001;
constant  kInetToolErrIPBindFailed				:= -60002;
constant  kInetToolErrPushModule				:= -60004;
constant  kInetToolErrIlink						:= -60005;
constant  kInetToolErrNetActivateReq			:= -60006;
constant  kInetToolErrTCPBind					:= -60007;
constant  kInetToolErrGetRequest				:= -60008;
constant  kInetToolErrPutRequest				:= -60009;
constant  kInetToolErrConnect					:= -60010;
constant  kInetToolErrDlAttach					:= -60011;
constant  kInetToolErrBind						:= -60012;
constant  kInetToolErrOpenLink					:= -60013;
constant  kInetToolErrUnlink						:= -60014;
constant  kInetToolErrOutOfPhase				:= -60015;
constant  kInetToolErrAddRoute					:= -60016;
constant  kInetToolErrListen						:= -60017;
constant  kInetToolErrLinkNotOpened			:= -60018;
constant  kInetToolErrDriverNotOpened			:= -60019;
constant  kInetToolErrStreamNotOpened			:= -60020;
constant  kInetToolErrBindReqFailed			:= -60021;
constant  kInetToolErrConnResReqFailed		:= -60022;
constant  kInetToolErrUnexpectedMgmntEvent	:= -60058;

// Following errors are mapped to the errors reported from the top of the
// stack and are reported to the glue code and in some cases to the client

constant  kInetToolErrMemAlloc								:= -60023;
constant  kInetToolErrMsgType								:= -60024;
constant  kInetToolErrNoDevice								:= -60025;
constant  kInetToolErrllegalOpenOnStream					:= -60026;
constant  kInetToolErrReqInInvalidState					:= -60027;
constant  kInetToolErrPrimitiveTooSmall					:= -60028;
constant  kInetToolErrPrimitiveOutOfRange				:= -60029;
constant  kInetToolErrPrimitiveOnInvalidStr				:= -60030;
constant  kInetToolErrMessageTooLong						:= -60031;
constant  kInetToolErrNetworkAlreadyActive				:= -60032;
constant  kInetToolErrNetworkNumberInvalid				:= -60033;
constant  kInetToolErrUnsupportedIoctl					:= -60034;
constant  kInetToolErrStreamAlreadyAttached				:= -60035;
constant  kInetToolErrUnknownMuxIndex						:= -60036;
constant  kInetToolErrNetworkIsInactive					:= -60037;
constant  kInetToolErrBogusConnection						:= -60038;
constant  kInetToolErrInvalidBillingMode					:= -60039;
constant  kInetToolErrNoTrigSelectedInAlarm				:= -60040;
constant  kInetToolErrInvalidTrigSize						:= -60041;
constant  kInetToolErrInvalidConnectionRef				:= -60042;
constant  kInetToolErrIlegalMdataInPrim					:= -60043;
constant  kInetToolErrMissingMdataInPrim					:= -60044;
constant  kInetToolErrInvalidSegmentedPrim				:= -60045;
constant  kInetToolErrInvalidNPIVersion					:= -60046;
constant  kInetToolErrInvalidAddress						:= -60047;
constant  kInetToolErrOutOfTCPPortNumbers				:= -60048;
constant  kInetToolErrSocketInUse							:= -60049;
constant  kInetToolErrReservedPortNumber					:= -60050;
constant  kInetToolErrExpDataNotSupported				:= -60051;

// TPI errors related to UDP

constant  kInetToolErrRedundentRequest					:= -60052;

constant  kInetToolErrUnexpectedDLPrim					:= -60053;
constant  kInetToolErrUnexpectedTPIPrim					:= -60054;
constant  kInetToolErrUnexpectedNPIPrim					:= -60055;
constant  kInetToolErrUnknownTPIErrorCode				:= -60056;

// Events to the client

constant  kInetErrStreamInoperative						:= -60057;

// Errors related to network status events on PPP's management stream

constant  kInetErrLinkActivationNotCofirmed				:= -60059;
constant  kInetErrLinkDeactivationNotCofirmed			:= -60060;
constant  kInetErrLinkTerminateAckNotReceived			:= -60061;
constant  kInetErrNetworkDifferentFromTheReq			:= -60062;
constant  kInetErrConnLossFromTerminateRequest 		:= -60063;
constant  kInetErrConnLossFromTerminateAck	 			:= -60063;
constant  kInetErrConnLossFromConfigureRequest			:= -60064;
constant  kInetErrConnLossFromConfigureReject			:= -60065;
constant  kInetErrConnLossFromConfigureAck				:= -60066;
constant  kInetErrConnLossFromConfigureNack				:= -60067;
constant  kInetErrConnLossFromCodeReject					:= -60068;
constant  kInetErrConnLossFromMaxSetUpAttempts			:= -60069;
constant  kInetErrConnLossFromMandatoryFrameSize		:= -60070;
constant  kInetErrConnLossFromMandatoryAuthRej			:= -60071;
constant  kInetErrConnLossFromRemoteInitAuthFail		:= -60072;
constant  kInetErrConnLossFromLocalInitAuthFail		:= -60073;
constant  kInetErrConnLossFromLowerLinkFailure			:= -60074;
constant  kInetErrConnLossUnspecifiedReason				:= -60075;
constant  kInetErrConnLossFromMaxRemoteInitAuthFail	:= -60076;
constant  kInetErrConnLossFromMaxLocalInitAuthFail	:= -60077;
constant  kInetErrConnLossFromMngmntDeactivation		:= -60078;
constant  kInetErrConnLossFromNoIpAddr					:= -60079;

constant  kInetToolErrDataLinkLevel						:= -60080;
constant  kInetToolErrSubsBind								:= -60081;
constant  kInetToolErrNetDeActivateReq					:= -60082;
constant  kInetToolErrNetworkLevel							:= -60083;


//Link Controller err range: -60500 to -60999

constant  kInetErrNoSuchLinkID				:= -60501;
//constant  kInetErrBadTargetServiceOpt 		:= -60502;
//constant  kInetErrNoUnderlyingTool			:=	-60503;
constant  kInetErrLinkDisconnected				:= -60504;
constant  kInetErrConnectLinkFailed 		:=	-60505;


//DNSTool err base is -60750 (to 60999)

constant	 kDNSErrNoAnswerFoundYet 			:=	-60751; //no answer to a given question has yet been found
constant  kDNSErrInternalErr 					:=	-60752; //some kind of internal DNS tool failure
constant  kDNSErrNameSyntaxErr				:=	-60791; //bad name in DNS request...
constant  kDNSErrNoNameServer					:=	-60794; //no name server defined with an opt
constant	 KDNSErrAuthNameErr					:=	-60795; //authoritative nonexistent domain error
constant  kDNSErrNoAnswerErr					:=	-60796; //no answers available for request..could be nonexistent domain
constant	 kDNSErrNonexistentDomain			:=	-60797; //the domain name give in the request does not exist
constant  kDNSErrOutOfMemory					:=	-60798; //DNS tool ran out of memory
constant  kDNSErrCouldNotContactServer		:= -60800; //couldn't connect to the current DNS server
constant	 kDNSErrNoServersAvailable			:= -60801; //couldn't connect to any of the DNS servers in our list
constant  kDNSErrNoResponseFromServer		:=	-60814; //no response from the current server
constant  kDNSErrNoResponseFromAnyServer 	:=	-60815; //no response from any of the DNS servers we can query // 1355512



DefConst('kInetErrorTableEnglish, [
	kInetErrNoSuchLinkID,"No link setup is defined",
	kInetErrLinkDisconnected,"Internet Link disconnected",
	kInetErrConnectLinkFailed,"Internet connection failed",
	kInetErrStreamInoperative,"Remote host disconnected the link",
	kInetToolErrOutOfPhase,"PPP Negotiation failed",
	kDNSErrNonexistentDomain,"The domain name does not exist",
	kDNSErrNoResponseFromServer,"No response from the name server",
	0,nil,	// must leave this at the end !!
	]);

// To localize the error table, you can locObj the whole array and not bother to define all those
// symbols....
SetLocalizationFrame({english: '{}});

DefConst('kInetErrorTable,Locobj(kInetErrorTableEnglish,'errorstrings));
// This requires a localization frame be defined like this: SetLocalizationFrame({english: '{}});

// returns a string for a given error 
DefConst('kGetInetErrorStr, func(error)
	begin
		local errStr := TableLookup(kInetErrorTable, error);
		if not errStr then
			errStr := TableLookup(ROM_errortable, error);
		if not errStr then
			errStr := "Internet Error " & NumberStr(error);   // 1355042 1355899
		errStr;
	end);

// extracts the error number from an exception
DefConst('kGetExceptionError, func(exception) 
	begin
		local errorCode := 0;

		if HasSlot(exception, 'error) then
			errorCode := exception.error;

		else if classof(exception.data) = 'int then
			errorCode := exception.data
		else if IsFrame(exception.data) and HasSlot(exception.data, 'errorCode) then
			errorCode := exception.data.errorCode;

		else
			// unknown exception
			errorCode := -1;
		return errorCode;
	end);


